package org.eclipse.moquette.parser.netty;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import org.eclipse.moquette.proto.messages.AbstractMessage;
import org.eclipse.moquette.proto.messages.DisconnectMessage;

/**
 *
 * 服务器要根据先前此客户端在发送CONNECT消息可变头部Connect flag中的“Clean session flag”所设置值，再次复习一下：
 * 值为0，服务器必须在客户端断开之后继续存储/保持客户端的订阅状态。这些状态包括：
 * 存储订阅的消息QoS1和QoS2消息
 * 正在发送消息期间连接丢失导致发送失败的消息
 * 以便当客户端重新连接时以上消息可以被重新传递。
 * 值为1，服务器需要立刻清理连接状态数据。
 * 有一点需要牢记，服务器在接收到客户端发送的DISCONNECT消息之后，需要主动关闭TCP/IP连接。
 *
 * Created by alex on 15-5-25.
 */
public class DisconnectEncoder extends DemuxEncoder<DisconnectMessage> {


    @Override
    protected void encode(ChannelHandlerContext ctx, DisconnectMessage msg, ByteBuf out) {

        out.writeByte(AbstractMessage.DISCONNECT << 4).writeByte(0);
    }
}
